<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>对象</title>
</head>
<body>
<!--创建对象的方式:
    1. 使用字面量创建对象
        const o = {
            name: '佩奇'
        }
    2. 利用new Object创建对象
        const o = new Object({name: '佩奇'})
    3. 利用构造函数创建对象
        构造函数: 是一种特殊的函数，主要用来初始化对象
        使用场景: 常规的{ }语法允许创建一个对象，但是继续创建其他的对象还要多次写{ }，此时可以通过构造函数来快速创建多个类似的对象
        语法约定:
            1.它们的命名以大写字母开头
            2.它们只能由"new"操作符来执行
            声明构造函数:
                function 构造函数名(参数1 ， 参数2 ， 参数3) {
                    this.参数1 = 参数1
                    this.参数2 = 参数2
                    this.参数3 = 参数3
                } // 谁调用的this，那this就跟谁，如果this调用的是对象object，那么this的内容就能取到参数的内容

            调用构造函数:
                const 对象名 = new 构造函数名(参数1 ， 参数2 ， 参数3)
                // 调用构造函数需要用到new关键字
    4. 实例成员&静态成员
        实例成员: 通过构造函数创建的对象称为实例对象，实例对象中的属性和方法称为实例成员（实例属性和实例方法）
        静态成员: 构造函数的属性和方法称为静态成员

-->
</body>
<script>
    // 使用字面量创建对象 ———— 建议写成这样
    const obj = {}
    console.log(obj)
    obj.name = 'black'
    // 使用new Object 创建对象
    const obj1 = new Object()
    obj1.name = 'black'
    console.log(obj1)
    // 使用构造函数创建对象
    function Pig(name, age, gender) {
        this.name = name
        this.age = age
        this.gender = gender
    }
    const Peppa = new Pig('佩奇' , 6 , '女')
    const George = new Pig('乔治' , 6 , '男')
    const Mum = new Pig('猪妈妈' , 30 , '女')
    const Dad = new Pig('猪爸爸' , 32 , '男')
    // 注意 const obj = new Object() 和 const obj = new Pig('佩奇' , 6 , '女') 本质上是一样的
    // 所以要大写类名和加new, 类似的还有 new Date()
    // 这些都是构造函数，用于创建一个新的对象，new Object() 和 new Date() 是系统自己创建好了的，new Pig()是程序员自带的

    // 实例成员和静态成员
    // 1.实例成员: 实例对象上的属性和方法属于实例成员
    // 构造函数
    function Person(name) {
        // 构造函数的属性
        this.name = name
        // 构造函数的方法
        this.hello = function () {
            console.log('大家好~')
        }
    }
    // 实例化构造函数
    // 实例对象
    const p1 = new Person('Black')
    // 实例属性
    console.log(p1.name)
    // 实例方法
    p1.hello()
    // 2. 静态成员: 构造函数的属性和方法称为静态成员
    function Person1(name) {
        this.name = name
    }
    Person1.eyes = 2 // 静态属性
    Person1.sayHi = function () {
        console.log(this)
    } // 静态方法






</script>
</html>